﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace Salon
{
    public partial class FormAutoSalon : Form
    {
        public AutoSalon AutoSalon { get; set; }

        public FormAutoSalon()
        {
            InitializeComponent();
            Text = Forms.AUTOSALON_FORM;
        }
        //konstruktor inicjujący formatkę danymi konkretnego salonu
        public FormAutoSalon(AutoSalon autoSalon)
        {
            InitializeComponent();
            if (autoSalon != null)
            {
                fillFields(autoSalon);
            }

            btnNew.Enabled = true;
            Text = Forms.AUTOSALON_FORM;
        }
        private void fillFields(AutoSalon autoSalon)
        {
            int sur_pos = autoSalon.Name.LastIndexOf(' ');
            this.AutoSalon = autoSalon;
            txtName.Text = autoSalon.Name;
            cmbCountry.Text = autoSalon.Country;//w przyszlosci zmienic na SelecteText
            txtId.Text = autoSalon.Id.ToString();
            txtCity.Text = autoSalon.City;
            txtStreet.Text = autoSalon.Street;
            txtZip.Text = autoSalon.Zip;
            txtFlatNumber.Text = autoSalon.FlatNumber;
        }

        private void btnClose_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void btnNew_Click(object sender, EventArgs e)
        {
            this.AutoSalon = null;
            this.txtCity.Text = "";
            this.txtFlatNumber.Text = "";
            this.txtId.Text = "";
            this.txtName.Text = "";
            this.txtStreet.Text = "";
            this.txtZip.Text = "";
            this.cmbCountry.SelectedText = "";
        }

        private String validateFields()
        {
            String fields = "";
            fields += txtName.Text.Equals(String.Empty) ? "nazwa, " : "";
            fields += cmbCountry.Text.Equals(String.Empty) ? "państwo, " : "";//pozniej zmienic na SelectedText
            fields += txtCity.Text.Equals(String.Empty) ? "miasto, " : "";
            fields += txtStreet.Text.Equals(String.Empty) ? "ulica, " : "";
            fields += txtZip.Text.Equals(String.Empty) ? "kod, " : "";
            fields += txtFlatNumber.Text.Equals(String.Empty) ? "numer, " : "";

            return fields;
        }
        private void btnSave_Click(object sender, EventArgs e)
        {

            String fields = validateFields();
            if (!fields.Equals(String.Empty))
            {
                MessageBox.Show("Proszę uzupełnić pola " + fields.Substring(0, fields.Length - 2) + ".");
                return;
            }

            // imie i nazwisko
            if (this.AutoSalon == null && ServiceFactory.getAutoSalonService().checkIfNameExists(txtName.Text) > 0 )
            {
                MessageBox.Show("Podany salon już istnieje w bazie!");
                return;
            }

            //przy zapisywaniu najpierw tworzymy obiekt modelu a potem przekazujemy do odpowiedniego serwisu
            AutoSalon autoSalon = this.AutoSalon == null ? new AutoSalon() : this.AutoSalon;
            autoSalon.Name = txtName.Text;
            autoSalon.Country = cmbCountry.Text;//zmienic w przyszlosci
            autoSalon.City = txtCity.Text;
            autoSalon.Street = txtStreet.Text;
            autoSalon.Zip = txtZip.Text;
            autoSalon.FlatNumber = txtFlatNumber.Text;

            ServiceFactory.getAutoSalonService().saveAutoSalon(autoSalon);

            // rozróznienie zapisu od dodawania nowego salonu:
            if (autoSalon.Id > 0)
                MessageBox.Show("Zapisano salon " + autoSalon.Name);
            else
            {
                MessageBox.Show("Dodano nowy salon " + autoSalon.Name);
                
                // jeśli nowy to automatycznie aktualizuje rejestr salonów
                if (Global.MainPage.checkIfFormOpen(Forms.AUTOSALON_REGISTER))
                {
                    RegisterAutoSalons rc = Global.MainPage.getIfFormOpen(Forms.AUTOSALON_REGISTER) as RegisterAutoSalons;
                    rc.RegisterAutoSalons_Load(sender,e); // odświerzenie wartści
                    this.Activate(); // powrót do bierzącego okna
                }
            }
        }

        private void FormAutoSalon_Load(object sender, EventArgs e)
        {
        }
    }
}
